// 导入数据库操作模块
const db = require("../db/index");
// 判断加密的token密码
const bcrypt = require("bcryptjs");

// 获取用户基本信息的处理函数
exports.getUserInfo = (req, res) => {
    const sql = `select id, username, nickname, gender, user_pic , roleids from users where id=?`;
    // 注意：req 对象上的 user 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
    db.query(sql, req.user.id, (err, results) => {
        if (err) return res.cc(err);
        if (results.length !== 1) return res.cc("获取用户信息失败！");
        //将用户信息响应给客户端
        res.send({
            code: 200,
            message: "获取用户基本信息成功！",
            data: results[0],
        });
    });
};

// 更新用户基本信息的处理函数
exports.updateUserInfo = (req, res) => {
    const sql = `update ev_users set ? where id=?`;
    db.query(sql, [req.body, req.body.id], (err, results) => {
        if (err) return res.cc(err);
        if (results.affectedRows !== 1) return res.cc("修改用户基本信息失败！");
        // 修改用户信息成功
        return res.cc("修改用户基本信息成功！", 200);
    });
};

// 重置密码的处理函数
exports.updatePassword = (req, res) => {
    // 定义根据 id 查询用户数据的 SQL 语句
    const sql = `select * from ev_users where id=?`;
    db.query(sql, req.user.id, (err, results) => {
        if (err) return res.cc(err);
        if (results.length !== 1) return res.cc("用户不存在！");
        // 判断提交的旧密码是否正确
        const compareResult = bcrypt.compareSync(
            req.body.oldPwd,
            results[0].password
        );
        if (!compareResult) return res.cc("原密码错误！");

        // 定义更新用户密码的 SQL 语句
        const sql = `update ev_users set password=? where id=?`;
        // 对新密码进行 bcrypt 加密处理
        const newPwd = bcrypt.hashSync(req.body.newPwd, 10);
        db.query(sql, [newPwd, req.user.id], (err, results) => {
            if (err) return res.cc(err);
            if (results.affectedRows !== 1) return res.cc("更新密码失败！");
            // 更新密码成功
            res.cc("更新密码成功！", 200);
        });
    });
};

// 更新用户头像的处理函数
exports.updateAvatar = (req, res) => {
    const sql = "update ev_users set user_pic=? where id=?";
    db.query(sql, [req.body.avatar, req.user.id], (err, results) => {
        if (err) return res.cc(err);
        if (results.affectedRows !== 1) return res.cc("更新头像失败！");
        // 更新用户头像成功
        return res.cc("更新头像成功！", 200);
    });
};

// 退出登录
exports.logout = (req,res)=>{
    // 如果有设置黑名单，进行黑名单处理
    return res.cc("退出登录成功！", 200);
}